<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>await表达式</title>
</head>
<body>
  <script>
    // 作用：获取 Promise 对象成功的结果。注：await 表达式必须放在 async 函数中
    // await 表达式的右侧一般为 Promise 对象，但也可以是其他值
    // 如果表达式是 Promise 对象，await 返回的是 Promise 成功的值
    // 如果表达式是其他值，则直接返回该值
    async function fn() {
      // 表达式是其他值
      let res1 = await [1, 2]; // 返回值为 [1, 2]
      console.log(res1);

      // 表达式是成功的 Promise 对象
      let res2 = await Promise.resolve('执行成功'); // 返回值为 “执行成功”
      console.log(res2);

      // 表达式是失败的 Promise 对象，必须使用 try ... catch(e) {} 对其进行捕获处理
      try {
        let res3 = await Promise.reject('执行失败'); // 该行抛出错误
        console.log(res3) // 该行不会执行
      } catch(e) {
        console.warn(e); // 控制台打印 “执行失败”
      }
    }
    fn();
  </script>
</body>
</html>